根据documentation,"Pandas使用默认的单元格格式写入数据帧头。因为它是一种单元格格式,所以不能使用set_row()覆盖它。如果您希望使用自己的格式,那么最好的方法是关闭Pandas的自动标题,并编写您自己的。“解决方案是在to_excel调用中包含header=False和startrow=1,以避免复制标题并保留第一行为空,然后迭代标题以粘贴列值和您喜欢的格式。 使用您的代码的完整示例: import pandas as pd
import numpy as np
np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],
axis=1)
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
workbook = writer.book
worksheet = workbook.add_worksheet('Summary')
writer.sheets['Summary'] = worksheet
# format = workbook.add_format({'bg_color': '#21AD25'})
# worksheet.set_row(0, cell_format= format) # set the color of the first row to green
df.to_excel(writer, sheet_name='Summary', index=False, startrow=1, header=False)
# Add a header format.
header_format = workbook.add_format({
'bg_color': '#21AD25', # your setting
'bold': True, # additional stuff...
'text_wrap': True,
'valign': 'top',
'align': 'center',
'border': 1})
# Write the column headers with the defined format.
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num + 1, value, header_format)
writer.save()
|